package com.graduation.springbootinit.controller;

import com.graduation.springbootinit.common.BaseResponse;
import com.graduation.springbootinit.common.ResultUtils;
import com.graduation.springbootinit.model.entity.CulturePart.ClothingHistoryPeriod;
import com.graduation.springbootinit.model.entity.CulturePart.ClothingHistoryDetail;
import com.graduation.springbootinit.service.ClothingHistoryService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

/**
 * 服装历史文化接口
 */
@RestController
@RequestMapping("/api/clothing/history")
public class ClothingHistoryController {

    @Resource
    private ClothingHistoryService clothingHistoryService;

    /**
     * 获取所有历史时期列表
     * 按时间顺序返回所有历史时期，用于展示时间线
     * @return 历史时期列表
     */
    @GetMapping("/period/list")
    public BaseResponse<List<ClothingHistoryPeriod>> listPeriods() {
        return ResultUtils.success(clothingHistoryService.listPeriods());
    }

    /**
     * 获取指定时期的服饰详情列表
     * 根据时期ID返回该时期的所有服饰信息
     * @param period 包含时期ID的对象
     * @return 服饰详情列表
     */
    @PostMapping("/period/detail")
    public BaseResponse<List<ClothingHistoryDetail>> listDetails(@RequestBody ClothingHistoryPeriod period) {
        return ResultUtils.success(clothingHistoryService.listDetailsByPeriodId(period.getId()));
    }

    /**
     * 获取单个服饰的详细信息
     * 根据服饰ID返回具体的服饰详情
     * @param detail 包含服饰ID的对象
     * @return 服饰详情
     */
    @PostMapping("/detail/get")
    public BaseResponse<ClothingHistoryDetail> getDetail(@RequestBody ClothingHistoryDetail detail) {
        return ResultUtils.success(clothingHistoryService.getDetailById(detail.getId()));
    }

    /**
     * 添加新的历史时期
     * 用于后台管理，添加新的历史时期节点
     * @param period 历史时期信息
     * @return 新增时期的ID
     */
    @PostMapping("/period/add")
    public BaseResponse<Long> addPeriod(@RequestBody ClothingHistoryPeriod period) {
        return ResultUtils.success(clothingHistoryService.addPeriod(period));
    }

    /**
     * 添加新的服饰详情
     * 用于后台管理，添加某个时期的具体服饰信息
     * @param detail 服饰详情信息
     * @return 新增服饰的ID
     */
    @PostMapping("/detail/add")
    public BaseResponse<Long> addDetail(@RequestBody ClothingHistoryDetail detail) {
        return ResultUtils.success(clothingHistoryService.addDetail(detail));
    }

    /**
     * 更新历史时期信息
     * 用于后台管理，修改历史时期的信息
     * @param period 需要更新的时期信息
     * @return 更新是否成功
     */
    @PostMapping("/period/update")
    public BaseResponse<Boolean> updatePeriod(@RequestBody ClothingHistoryPeriod period) {
        clothingHistoryService.updatePeriod(period);
        return ResultUtils.success(true);
    }

    /**
     * 更新服饰详情信息
     * 用于后台管理，修改具体服饰的信息
     * @param detail 需要更新的服饰信息
     * @return 更新是否成功
     */
    @PostMapping("/detail/update")
    public BaseResponse<Boolean> updateDetail(@RequestBody ClothingHistoryDetail detail) {
        clothingHistoryService.updateDetail(detail);
        return ResultUtils.success(true);
    }
} 